package com.alan.camunda.boot.groovymod.shelllab;

import com.alibaba.fastjson2.JSONObject;
import groovy.lang.Binding;
import groovy.lang.GroovyShell;

/**
 * 脚本中访问变量的属性
 * 不能直接设置变量 "Global.SERVER_INFO"  会报错 No such property: Global
 */
public class Lab1Demo3 {


    public static void main(String[] args) {

        // 创建绑定对象，将变量和方法传递到 Groovy 脚本中
        Binding binding = new Binding();

        JSONObject faultData = new JSONObject();
        faultData.put("faultCode", "20003");
        faultData.put("faultMessage", "计算脚本异常");
        binding.setVariable("Fault", faultData);
        binding.setVariable("Global.SERVER_INFO", "10.0.12.209");

        // 创建 GroovyShell 实例，并注入绑定对象
        GroovyShell shell = new GroovyShell(binding);

        // 定义 Groovy 脚本
        String script = """
            // 访问注入的变量
            import static com.alan.camunda.boot.util.StringFunctions.*
            // 调用注入的静态方法
            def result = "Fault Code is:" + Fault.faultCode + ", server info is:" + Global.SERVER_INFO
            return result
        """;

        // 执行 Groovy 脚本
        Object result = shell.evaluate(script);

        // 输出执行结果
        System.out.println("Groovy script result: " + result);


    }


}
